package org.huel.backend.controller;

import org.huel.backend.service.impl.AIService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author Liweijian.
 * @Description TODO
 * @date 2025/6/15 17:47
 */
@RestController // 标记这个类是一个REST控制器
@RequestMapping("aianalysis") // 定义这个控制器处理的基础URL路径
public class AIController {

    private static final String TARGET_TABLE_NAME = "course_attendance";

    // 硬编码要进行的分析问题
    // >>>>>>>>>>> 请在这里写下您希望AI对 course_attendance 表进行的固定分析任务 <<<<<<<<<<<
    private static final String DEFAULT_ANALYSIS_QUESTION = "你是一个大学老师，请分析 course_attendance 表的各个班级出勤情况，提供一份摘要，并识别出任何异常或趋势。";

    @Autowired
    private AIService aiService;

    /**
     * 处理针对 course_attendance 表的AI分析POST请求。
     * 表格名称和分析问题都已硬编码。
     * 这个端点不接受任何请求参数或请求体。
     *
     * @return 包含AI分析结果字符串的 ResponseEntity
     */
    @PostMapping("/analyzeAttendance") // 定义处理 /aianalysis/analyzeAttendance POST请求的方法
    public ResponseEntity<String> analyzeAttendanceTable() { // 方法不再接收任何参数

        // 打印接收到请求的信息（用于调试）
        System.out.println("收到对硬编码表格 [" + TARGET_TABLE_NAME + "] 进行AI分析的请求...");
        System.out.println("将使用固定分析问题: " + DEFAULT_ANALYSIS_QUESTION);

        try {

            System.out.println("正在调用 AIService 分析表格 [" + TARGET_TABLE_NAME + "]...");
            String analysisResult = aiService.analyzeTableWithAI(TARGET_TABLE_NAME, DEFAULT_ANALYSIS_QUESTION);
            System.out.println("AIService 调用完成。");

            if (analysisResult.startsWith("Error:")) {
                System.err.println("AIService 返回了错误结果: " + analysisResult);
                return ResponseEntity.ok(analysisResult); // 返回包含错误信息的 200 OK

            } else {
                // 分析成功，返回 AI 分析结果
                System.out.println("表格 [" + TARGET_TABLE_NAME + "] 分析成功，返回结果。");
                // 返回 HTTP 200 OK 和分析结果字符串
                return ResponseEntity.ok(analysisResult);
            }

        } catch (Exception e) {
            // 捕获在调用 AIService 过程中发生的任何意外异常
            System.err.println("处理分析表格 [" + TARGET_TABLE_NAME + "] 的请求时发生意外错误。");
            System.err.println("错误详情: " + e.getMessage());
            e.printStackTrace(); // 打印异常堆栈信息，便于排查问题
            // 返回 HTTP 500 Internal Server Error
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
                    .body("内部服务器错误: " + e.getMessage()); // 返回错误信息给客户端
        }
    }
}
